#ifndef BTREE_H_
#define BTREE_H_

#include <string>
#include "../BloqArch/ArchBloques.h"
#include "../BloqArch/INodo.h"
#include "../BloqArch/Resultados.h"
#include "HeaderDatos.h"
#include "RegistroDatos.h"
#include "RegistroIndice.h"


class BTree {
private:
	ArchBloques _arch;
	HeaderDatos _cabecera;

	int guardarNodo(INodo* n, int posBloque = -1);
	INodo* cargarNodo(int posBloque, int altura);
	RegistroDatos buscarRecursivo(RegistroDatos regId, INodo* nodo, int altura);
	Resultado insertarRegistroRecursivo(RegistroDatos* reg, INodo* Npadre, int altura);
	Resultado resolverOverflow(INodo* nHijo, INodo* nPadre, RegistroIndice rPadre, int altura);

public:
	BTree(std::string nomArch, bool nuevoArbol = false);
	virtual ~BTree();

	RegistroDatos buscarRegistro(unsigned int id);
	Resultado insertarRegistro(RegistroDatos* reg);
};

#endif /* BTREE_H_ */
